更新(2021/12/31)
我似乎找到了更适合的方式来做这件事:通过长按应用图标唤起的菜单(苹果的 Quick Action,安卓叫 App Shortcuts) 看图:
这样不仅避免了手工创建快捷指令的麻烦,还让安卓也支持一键访问,又统一了两个平台的交互,简直一石三 🐦 啊。。
但仍存在个问题:菜单长度有限,不能加太多快捷方式,后续打算把这块做成可配置的,敬请期待。顺祝元旦快乐~
背景
因为疫情原因,每天上班进公司门需要查验粤康码,粤康码藏在粤省事小程序的二级页面,打开不太方便。就想着有没有办法一键直达。安卓系统是支持创建桌面快捷方式,但貌似也无法指定特定页面。另一个跨系统通用的方法,是通过生成小程序的 URL Scheme 链接,形如:weixin://dl/business/?ticket=xxxxxx , 但前提是你得是这个小程序的属主,无法做到任意小程序跳转。
恰好这段时间在研究 Flutter 开发,发现通过 app 打开小程序没有诸多限制,甚至连“在微信中打开此页”的提醒都没有,确实能做到一键直达。再配合“深链接(deepLink)”,就可以将打开微信小程序的能力,创建到系统桌面。接下来看看具体步骤。
操作步骤
既然需要借助 app 的能力来打开微信小程序,那第一步自然是安装 app 了, 在苹果应用商店(App Store)中搜索
跨时空
或kainy
,也可以通过 应用主页 下载;在手机上打开“快捷指令” ,搜索“打开网页”,填入 URL https://t.kainy.cn/#weixin://app/wx2604a227cbdfc489/jumpWxa/?userName=gh_1ac06b5a8f4e&path=operation_plus/pages/yiqing/daka/user/index/, 其中前半部分
https://t.kainy.cn/#weixin://app/wx2604a227cbdfc489/jumpWxa/?
是固定的,后半部分的参数userName
和path
,分别对应小程序的原始ID 和 小程序页面路径,原始ID 可以通过小程序资料页获取到;最后将快捷指令添加到系统桌面即可。
更详细的步骤可以到微信视频号搜 kainy
观看之前制作的一个视频教程,步骤大同小异,只是那段时间微信没验证 ticket,直接通过浏览器
就可以打开小程序。现在无法绕过了,必须安装一个 app 也就是上述第一步安装的跨时空app 。
原理
在一开始有提到,这个直达方法的本质,就是整合了深链接和微信SDK的打开小程序能力。
- 首先,点击桌面快捷方式的时候,系统识别到 t.kainy.cn 域名,唤起跨时空 app ;
- app 接收到完整的 URL,并解析出 userName 和 path 参数;
- 调用微信SDK唤起微信小程序。
摸索这个功能的出发点,是观察到家里老人很难快速找到需要的小程序,一方面是老人家对新事物的接受较慢;另一方面微信对小程序入口有过几次较大的变动,即便是添加过“我的小程序”列表,一个UI调整就可能让他们找不到整个列表。导致的结果就是,和老人家进出公共场所的时候不仅要整自己的码,还要顾上身边老人的,一时间手忙脚乱,特别是人多时候,安检员也顾不过来。最后发现这个方法确实挺方便的,就自己也用上了 😁
交流反馈群
附录:微信常用小程序 URL Scheme 整理
via:v2ex
以下 URL Scheme 直接用是打开不了微信小程序的,但是可以从中取到所需的 userName 和 path 参数,拼接到上诉 URL 即可~
粤康码:
1 | URL Scheme: |
穗康码:
1 | URL Scheme: |
微信乘车码:
1 | URL Scheme: |
通信行程卡:
1 | URL Scheme: |
深i您健康码:
1 | URL Scheme: |
深圳平安门禁:
1 | URL Scheme: |
上海随申码:
1 | URL Scheme: |
北京健康宝-本人健康码页面:
1 | URL Scheme: |
渝康码:
1 | URL Scheme: |
苏康码:
1 | 支付宝 URL Scheme: |
河北健康码:
1 | URL Scheme: |
四川天府健康通:
1 | URL Scheme: |
南昌赣通码:
1 | URL Scheme: |
山东电子健康码:
1 | URL Scheme: |
辽事通:
1 | URL Scheme: |
西安市民一码通:
1 | URL Scheme: |
福建八闽健康码:
1 | URL Scheme: |